<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/asm-generic/bug.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/asm-generic/bug.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0FTTV9HRU5FUklDX0JVR19IXzA_"><span class="b">_ASM_GENERIC_BUG_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0FTTV9HRU5FUklDX0JVR19IXzA_"><span class="b">_ASM_GENERIC_BUG_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">compiler</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> 
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0dFTkVSSUNfQlVHXzA_"><span class="b">CONFIG_GENERIC_BUG</span></a>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_QlVHRkxBR19XQVJOSU5HXzA_"><span class="b">BUGFLAG_WARNING</span></a>        <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="c">0</span><span class="f">)</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QlVHRkxBR19UQUlOVF8w"><span class="b">BUGFLAG_TAINT</span></a><span class="f">(</span><span class="b">taint</span><span class="f">)</span>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_QlVHRkxBR19XQVJOSU5HXzA_"><span class="b">BUGFLAG_WARNING</span></a> <span class="f">|</span> <span class="f">(</span><span class="f">(</span><span class="b">taint</span><span class="f">)</span> <span class="f">&lt;&lt;</span> <span class="c">8</span><span class="f">)</span><span class="f">)</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QlVHX0dFVF9UQUlOVF8w"><span class="b">BUG_GET_TAINT</span></a><span class="f">(</span><span class="b">bug</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">bug</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&gt;&gt;</span> <span class="c">8</span><span class="f">)</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">endif</span>
<a name="11" /><span class="Maybe">      11:</span> 
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kernel</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="14" /><span class="Maybe">      14:</span> 
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0JVR18w"><span class="b">CONFIG_BUG</span></a>
<a name="16" /><span class="Maybe">      16:</span> 
<a name="17" /><span class="Maybe">      17:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0dFTkVSSUNfQlVHXzA_"><span class="b">CONFIG_GENERIC_BUG</span></a>
<a name="18" /><span class="Maybe">      18:</span> <span class="m">struct</span> <span class="b">bug_entry</span> <span class="f">{</span>
<a name="19" /><span class="False">      19:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0dFTkVSSUNfQlVHX1JFTEFUSVZFX1BPSU5URVJTXzA_"><span class="b">CONFIG_GENERIC_BUG_RELATIVE_POINTERS</span></a>
<a name="20" /><span class="False">      20:</span>     <span class="m">unsigned</span> <span class="m">long</span>    <span class="b">bug_addr</span><span class="f">;</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="f">#</span><span class="n">else</span>
<a name="22" /><span class="Maybe">      22:</span>     <span class="m">signed</span> <span class="m">int</span>    <span class="b">bug_addr_disp</span><span class="f">;</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">endif</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0RFQlVHX0JVR1ZFUkJPU0VfMA__"><span class="b">CONFIG_DEBUG_BUGVERBOSE</span></a>
<a name="25" /><span class="False">      25:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0dFTkVSSUNfQlVHX1JFTEFUSVZFX1BPSU5URVJTXzA_"><span class="b">CONFIG_GENERIC_BUG_RELATIVE_POINTERS</span></a>
<a name="26" /><span class="False">      26:</span>     <span class="m">const</span> <span class="m">char</span>    <span class="f">*</span><span class="b">file</span><span class="f">;</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">#</span><span class="n">else</span>
<a name="28" /><span class="Maybe">      28:</span>     <span class="m">signed</span> <span class="m">int</span>    <span class="b">file_disp</span><span class="f">;</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">endif</span>
<a name="30" /><span class="Maybe">      30:</span>     <span class="m">unsigned</span> <span class="m">short</span>    <span class="b">line</span><span class="f">;</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="f">#</span><span class="n">endif</span>
<a name="32" /><span class="Maybe">      32:</span>     <span class="m">unsigned</span> <span class="m">short</span>    <span class="b">flags</span><span class="f">;</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">}</span><span class="f">;</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* CONFIG_GENERIC_BUG */</span>
<a name="35" /><span class="Maybe">      35:</span> 
<a name="36" /><span class="Maybe">      36:</span> <span class="k">/*</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="k"> * Don&apos;t use BUG() or BUG_ON() unless there&apos;s really no way out; one</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k"> * example might be detecting data structure corruption in the middle</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="k"> * of an operation that can&apos;t be backed out of.  If the (sub)system</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> * can somehow continue operating, perhaps with reduced functionality,</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> * it&apos;s probably not BUG-worthy.</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> *</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * If you&apos;re tempted to BUG(), think again:  is completely giving up</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> * really the *only* solution?  There are usually better options, where</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * users don&apos;t need to reboot ASAP and can mostly shut down cleanly.</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> */</span>
<a name="47" /><span class="False">      47:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_SEFWRV9BUkNIX0JVR18w"><span class="b">HAVE_ARCH_BUG</span></a>
<a name="48" /><span class="False">      48:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_QlVHXzA_"><span class="b">BUG</span></a><span class="f">(</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> \
<a name="49" /><span class="False">      49:</span>     <span class="b">printk</span><span class="f">(</span><span class="e">&quot;BUG: failure at %s:%d/%s()!\n&quot;</span><span class="f">,</span> <span class="b">__FILE__</span><span class="f">,</span> <span class="b">__LINE__</span><span class="f">,</span> <span class="b">__func__</span><span class="f">)</span><span class="f">;</span> \
<a name="50" /><span class="False">      50:</span>     <span class="b">panic</span><span class="f">(</span><span class="e">&quot;BUG!&quot;</span><span class="f">)</span><span class="f">;</span> \
<a name="51" /><span class="False">      51:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="f">#</span><span class="n">endif</span>
<a name="53" /><span class="Maybe">      53:</span> 
<a name="54" /><span class="Maybe">      54:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">HAVE_ARCH_BUG_ON</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_QlVHX09OXzA_"><span class="b">BUG_ON</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_QlVHXzA_"><span class="b">BUG</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span><span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="f">#</span><span class="n">endif</span>
<a name="57" /><span class="Maybe">      57:</span> 
<a name="58" /><span class="Maybe">      58:</span> <span class="k">/*</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> * WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * significant issues that need prompt attention if they should ever</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> * appear at runtime.  Use the versions with printk format strings</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * to provide better diagnostics.</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> */</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__WARN_TAINT</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">3</span><span class="f">,</span> <span class="c">4</span><span class="f">)</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="m">void</span> <span class="b">warn_slowpath_fmt</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">file</span><span class="f">,</span> <span class="m">const</span> <span class="m">int</span> <span class="b">line</span><span class="f">,</span>
<a name="67" /><span class="Maybe">      67:</span>                <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">4</span><span class="f">,</span> <span class="c">5</span><span class="f">)</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="m">void</span> <span class="b">warn_slowpath_fmt_taint</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">file</span><span class="f">,</span> <span class="m">const</span> <span class="m">int</span> <span class="b">line</span><span class="f">,</span> <span class="m">unsigned</span> <span class="b">taint</span><span class="f">,</span>
<a name="70" /><span class="Maybe">      70:</span>                  <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">warn_slowpath_null</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">file</span><span class="f">,</span> <span class="m">const</span> <span class="m">int</span> <span class="b">line</span><span class="f">)</span><span class="f">;</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FOVF9XQVJOX09OX1NMT1dQQVRIXzA_"><span class="b">WANT_WARN_ON_SLOWPATH</span></a>
<a name="73" /><span class="Maybe">      73:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19XQVJOXzA_"><span class="b">__WARN</span></a><span class="f">(</span><span class="f">)</span>        <span class="b">warn_slowpath_null</span><span class="f">(</span><span class="b">__FILE__</span><span class="f">,</span> <span class="b">__LINE__</span><span class="f">)</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19XQVJOX3ByaW50Zl8w"><span class="b">__WARN_printf</span></a><span class="f">(</span><span class="b">arg</span><span class="f">...</span><span class="f">)</span>    <span class="b">warn_slowpath_fmt</span><span class="f">(</span><span class="b">__FILE__</span><span class="f">,</span> <span class="b">__LINE__</span><span class="f">,</span> <span class="b">arg</span><span class="f">)</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19XQVJOX3ByaW50Zl90YWludF8w"><span class="b">__WARN_printf_taint</span></a><span class="f">(</span><span class="b">taint</span><span class="f">,</span> <span class="b">arg</span><span class="f">...</span><span class="f">)</span>                \
<a name="76" /><span class="Maybe">      76:</span>     <span class="b">warn_slowpath_fmt_taint</span><span class="f">(</span><span class="b">__FILE__</span><span class="f">,</span> <span class="b">__LINE__</span><span class="f">,</span> <span class="b">taint</span><span class="f">,</span> <span class="b">arg</span><span class="f">)</span>
<a name="77" /><span class="False">      77:</span> <span class="f">#</span><span class="n">else</span>
<a name="78" /><span class="False">      78:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19XQVJOXzA_"><span class="b">__WARN</span></a><span class="f">(</span><span class="f">)</span>        <span class="b">__WARN_TAINT</span><span class="f">(</span><a href="cpu.c_macros_noref.html#_VEFJTlRfV0FSTl8w"><span class="b">TAINT_WARN</span></a><span class="f">)</span>
<a name="79" /><span class="False">      79:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19XQVJOX3ByaW50Zl8w"><span class="b">__WARN_printf</span></a><span class="f">(</span><span class="b">arg</span><span class="f">...</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span> <span class="b">printk</span><span class="f">(</span><span class="b">arg</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_X19XQVJOXzA_"><span class="b">__WARN</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="80" /><span class="False">      80:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19XQVJOX3ByaW50Zl90YWludF8w"><span class="b">__WARN_printf_taint</span></a><span class="f">(</span><span class="b">taint</span><span class="f">,</span> <span class="b">arg</span><span class="f">...</span><span class="f">)</span>                \
<a name="81" /><span class="False">      81:</span>     <span class="m">do</span> <span class="f">{</span> <span class="b">printk</span><span class="f">(</span><span class="b">arg</span><span class="f">)</span><span class="f">;</span> <span class="b">__WARN_TAINT</span><span class="f">(</span><span class="b">taint</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="f">#</span><span class="n">endif</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="Maybe">      84:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a>
<a name="85" /><span class="Maybe">      85:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                        \
<a name="86" /><span class="Maybe">      86:</span>     <span class="m">int</span> <span class="b">__ret_warn_on</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>                \
<a name="87" /><span class="Maybe">      87:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">)</span>                    \
<a name="88" /><span class="Maybe">      88:</span>         <a href="cpu.c_macros_ref.html#_X19XQVJOXzA_"><span class="b">__WARN</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="89" /><span class="Maybe">      89:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">;</span>                    \
<a name="90" /><span class="Maybe">      90:</span> <span class="f">}</span><span class="f">)</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="f">#</span><span class="n">endif</span>
<a name="92" /><span class="Maybe">      92:</span> 
<a name="93" /><span class="Maybe">      93:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_V0FSTl8w"><span class="b">WARN</span></a>
<a name="94" /><span class="Maybe">      94:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_V0FSTl8w"><span class="b">WARN</span></a><span class="f">(</span><span class="b">condition</span><span class="f">,</span> <span class="b">format</span><span class="f">...</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                        \
<a name="95" /><span class="Maybe">      95:</span>     <span class="m">int</span> <span class="b">__ret_warn_on</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>                \
<a name="96" /><span class="Maybe">      96:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">)</span>                    \
<a name="97" /><span class="Maybe">      97:</span>         <a href="cpu.c_macros_ref.html#_X19XQVJOX3ByaW50Zl8w"><span class="b">__WARN_printf</span></a><span class="f">(</span><span class="b">format</span><span class="f">)</span><span class="f">;</span>                    \
<a name="98" /><span class="Maybe">      98:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">;</span>                    \
<a name="99" /><span class="Maybe">      99:</span> <span class="f">}</span><span class="f">)</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="f">#</span><span class="n">endif</span>
<a name="101" /><span class="Maybe">     101:</span> 
<a name="102" /><span class="Maybe">     102:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FSTl9UQUlOVF8w"><span class="b">WARN_TAINT</span></a><span class="f">(</span><span class="b">condition</span><span class="f">,</span> <span class="b">taint</span><span class="f">,</span> <span class="b">format</span><span class="f">...</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>            \
<a name="103" /><span class="Maybe">     103:</span>     <span class="m">int</span> <span class="b">__ret_warn_on</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>                \
<a name="104" /><span class="Maybe">     104:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">)</span>                    \
<a name="105" /><span class="Maybe">     105:</span>         <a href="cpu.c_macros_noref.html#_X19XQVJOX3ByaW50Zl90YWludF8w"><span class="b">__WARN_printf_taint</span></a><span class="f">(</span><span class="b">taint</span><span class="f">,</span> <span class="b">format</span><span class="f">)</span><span class="f">;</span>            \
<a name="106" /><span class="Maybe">     106:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">;</span>                    \
<a name="107" /><span class="Maybe">     107:</span> <span class="f">}</span><span class="f">)</span>
<a name="108" /><span class="Maybe">     108:</span> 
<a name="109" /><span class="False">     109:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_BUG */</span>
<a name="110" /><span class="False">     110:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_SEFWRV9BUkNIX0JVR18w"><span class="b">HAVE_ARCH_BUG</span></a>
<a name="111" /><span class="False">     111:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_QlVHXzA_"><span class="b">BUG</span></a><span class="f">(</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span><span class="f">}</span> <span class="m">while</span><span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="112" /><span class="False">     112:</span> <span class="f">#</span><span class="n">endif</span>
<a name="113" /><span class="False">     113:</span> 
<a name="114" /><span class="False">     114:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">HAVE_ARCH_BUG_ON</span>
<a name="115" /><span class="False">     115:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_QlVHX09OXzA_"><span class="b">BUG_ON</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span> <span class="m">if</span> <span class="f">(</span><span class="b">condition</span><span class="f">)</span> <span class="f">;</span> <span class="f">}</span> <span class="m">while</span><span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="116" /><span class="False">     116:</span> <span class="f">#</span><span class="n">endif</span>
<a name="117" /><span class="False">     117:</span> 
<a name="118" /><span class="False">     118:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">HAVE_ARCH_WARN_ON</span>
<a name="119" /><span class="False">     119:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                        \
<a name="120" /><span class="False">     120:</span>     <span class="m">int</span> <span class="b">__ret_warn_on</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>                \
<a name="121" /><span class="False">     121:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">;</span>                    \
<a name="122" /><span class="False">     122:</span> <span class="f">}</span><span class="f">)</span>
<a name="123" /><span class="False">     123:</span> <span class="f">#</span><span class="n">endif</span>
<a name="124" /><span class="False">     124:</span> 
<a name="125" /><span class="False">     125:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_V0FSTl8w"><span class="b">WARN</span></a>
<a name="126" /><span class="False">     126:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_V0FSTl8w"><span class="b">WARN</span></a><span class="f">(</span><span class="b">condition</span><span class="f">,</span> <span class="b">format</span><span class="f">...</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                    \
<a name="127" /><span class="False">     127:</span>     <span class="m">int</span> <span class="b">__ret_warn_on</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>                \
<a name="128" /><span class="False">     128:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_on</span><span class="f">)</span><span class="f">;</span>                    \
<a name="129" /><span class="False">     129:</span> <span class="f">}</span><span class="f">)</span>
<a name="130" /><span class="False">     130:</span> <span class="f">#</span><span class="n">endif</span>
<a name="131" /><span class="False">     131:</span> 
<a name="132" /><span class="False">     132:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FSTl9UQUlOVF8w"><span class="b">WARN_TAINT</span></a><span class="f">(</span><span class="b">condition</span><span class="f">,</span> <span class="b">taint</span><span class="f">,</span> <span class="b">format</span><span class="f">...</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span>
<a name="133" /><span class="False">     133:</span> 
<a name="134" /><span class="Maybe">     134:</span> <span class="f">#</span><span class="n">endif</span>
<a name="135" /><span class="Maybe">     135:</span> 
<a name="136" /><span class="Maybe">     136:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_V0FSTl9PTl9PTkNFXzA_"><span class="b">WARN_ON_ONCE</span></a><span class="f">(</span><span class="b">condition</span><span class="f">)</span>    <span class="f">(</span><span class="f">{</span>                \
<a name="137" /><span class="Maybe">     137:</span>     <span class="m">static</span> <span class="m">bool</span> <a href="cpu.c_macros_ref.html#_X19zZWN0aW9uXzA_"><span class="b">__section</span></a><span class="f">(</span><span class="f">.</span><span class="b">data</span><span class="f">.</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">)</span> <span class="b">__warned</span><span class="f">;</span>        \
<a name="138" /><span class="Maybe">     138:</span>     <span class="m">int</span> <span class="b">__ret_warn_once</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>            \
<a name="139" /><span class="Maybe">     139:</span>                                 \
<a name="140" /><span class="Maybe">     140:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_once</span><span class="f">)</span><span class="f">)</span>                \
<a name="141" /><span class="Maybe">     141:</span>         <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="f">!</span><span class="b">__warned</span><span class="f">)</span><span class="f">)</span>             \
<a name="142" /><span class="Maybe">     142:</span>             <span class="b">__warned</span> <span class="f">=</span> <span class="m">true</span><span class="f">;</span>            \
<a name="143" /><span class="Maybe">     143:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_once</span><span class="f">)</span><span class="f">;</span>                \
<a name="144" /><span class="Maybe">     144:</span> <span class="f">}</span><span class="f">)</span>
<a name="145" /><span class="Maybe">     145:</span> 
<a name="146" /><span class="Maybe">     146:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FSTl9PTkNFXzA_"><span class="b">WARN_ONCE</span></a><span class="f">(</span><span class="b">condition</span><span class="f">,</span> <span class="b">format</span><span class="f">...</span><span class="f">)</span>    <span class="f">(</span><span class="f">{</span>            \
<a name="147" /><span class="Maybe">     147:</span>     <span class="m">static</span> <span class="m">bool</span> <a href="cpu.c_macros_ref.html#_X19zZWN0aW9uXzA_"><span class="b">__section</span></a><span class="f">(</span><span class="f">.</span><span class="b">data</span><span class="f">.</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">)</span> <span class="b">__warned</span><span class="f">;</span>        \
<a name="148" /><span class="Maybe">     148:</span>     <span class="m">int</span> <span class="b">__ret_warn_once</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>            \
<a name="149" /><span class="Maybe">     149:</span>                                 \
<a name="150" /><span class="Maybe">     150:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_once</span><span class="f">)</span><span class="f">)</span>                \
<a name="151" /><span class="Maybe">     151:</span>         <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_V0FSTl8w"><span class="b">WARN</span></a><span class="f">(</span><span class="f">!</span><span class="b">__warned</span><span class="f">,</span> <span class="b">format</span><span class="f">)</span><span class="f">)</span>             \
<a name="152" /><span class="Maybe">     152:</span>             <span class="b">__warned</span> <span class="f">=</span> <span class="m">true</span><span class="f">;</span>            \
<a name="153" /><span class="Maybe">     153:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_once</span><span class="f">)</span><span class="f">;</span>                \
<a name="154" /><span class="Maybe">     154:</span> <span class="f">}</span><span class="f">)</span>
<a name="155" /><span class="Maybe">     155:</span> 
<a name="156" /><span class="Maybe">     156:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FSTl9UQUlOVF9PTkNFXzA_"><span class="b">WARN_TAINT_ONCE</span></a><span class="f">(</span><span class="b">condition</span><span class="f">,</span> <span class="b">taint</span><span class="f">,</span> <span class="b">format</span><span class="f">...</span><span class="f">)</span>    <span class="f">(</span><span class="f">{</span>    \
<a name="157" /><span class="Maybe">     157:</span>     <span class="m">static</span> <span class="m">bool</span> <a href="cpu.c_macros_ref.html#_X19zZWN0aW9uXzA_"><span class="b">__section</span></a><span class="f">(</span><span class="f">.</span><span class="b">data</span><span class="f">.</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">)</span> <span class="b">__warned</span><span class="f">;</span>        \
<a name="158" /><span class="Maybe">     158:</span>     <span class="m">int</span> <span class="b">__ret_warn_once</span> <span class="f">=</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">;</span>            \
<a name="159" /><span class="Maybe">     159:</span>                                 \
<a name="160" /><span class="Maybe">     160:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_once</span><span class="f">)</span><span class="f">)</span>                \
<a name="161" /><span class="Maybe">     161:</span>         <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_noref.html#_V0FSTl9UQUlOVF8w"><span class="b">WARN_TAINT</span></a><span class="f">(</span><span class="f">!</span><span class="b">__warned</span><span class="f">,</span> <span class="b">taint</span><span class="f">,</span> <span class="b">format</span><span class="f">)</span><span class="f">)</span>    \
<a name="162" /><span class="Maybe">     162:</span>             <span class="b">__warned</span> <span class="f">=</span> <span class="m">true</span><span class="f">;</span>            \
<a name="163" /><span class="Maybe">     163:</span>     <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">__ret_warn_once</span><span class="f">)</span><span class="f">;</span>                \
<a name="164" /><span class="Maybe">     164:</span> <span class="f">}</span><span class="f">)</span>
<a name="165" /><span class="Maybe">     165:</span> 
<a name="166" /><span class="Maybe">     166:</span> <span class="k">/*</span>
<a name="167" /><span class="Maybe">     167:</span> <span class="k"> * WARN_ON_SMP() is for cases that the warning is either</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="k"> * meaningless for !SMP or may even cause failures.</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="k"> * This is usually used for cases that we have</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="k"> * WARN_ON(!spin_is_locked(&amp;lock)) checks, as spin_is_locked()</span>
<a name="171" /><span class="Maybe">     171:</span> <span class="k"> * returns 0 for uniprocessor settings.</span>
<a name="172" /><span class="Maybe">     172:</span> <span class="k"> * It can also be used with values that are only defined</span>
<a name="173" /><span class="Maybe">     173:</span> <span class="k"> * on SMP:</span>
<a name="174" /><span class="Maybe">     174:</span> <span class="k"> *</span>
<a name="175" /><span class="Maybe">     175:</span> <span class="k"> * struct foo {</span>
<a name="176" /><span class="Maybe">     176:</span> <span class="k"> *  [...]</span>
<a name="177" /><span class="Maybe">     177:</span> <span class="k"> * #ifdef CONFIG_SMP</span>
<a name="178" /><span class="Maybe">     178:</span> <span class="k"> *    int bar;</span>
<a name="179" /><span class="Maybe">     179:</span> <span class="k"> * #endif</span>
<a name="180" /><span class="Maybe">     180:</span> <span class="k"> * };</span>
<a name="181" /><span class="Maybe">     181:</span> <span class="k"> *</span>
<a name="182" /><span class="Maybe">     182:</span> <span class="k"> * void func(struct foo *zoot)</span>
<a name="183" /><span class="Maybe">     183:</span> <span class="k"> * {</span>
<a name="184" /><span class="Maybe">     184:</span> <span class="k"> *    WARN_ON_SMP(!zoot-&gt;bar);</span>
<a name="185" /><span class="Maybe">     185:</span> <span class="k"> *</span>
<a name="186" /><span class="Maybe">     186:</span> <span class="k"> * For CONFIG_SMP, WARN_ON_SMP() should act the same as WARN_ON(),</span>
<a name="187" /><span class="Maybe">     187:</span> <span class="k"> * and should be a nop and return false for uniprocessor.</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="k"> *</span>
<a name="189" /><span class="Maybe">     189:</span> <span class="k"> * if (WARN_ON_SMP(x)) returns true only when CONFIG_SMP is set</span>
<a name="190" /><span class="Maybe">     190:</span> <span class="k"> * and x is true.</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="k"> */</span>
<a name="192" /><span class="Maybe">     192:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a>
<a name="193" /><span class="Maybe">     193:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FSTl9PTl9TTVBfMA__"><span class="b">WARN_ON_SMP</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>            <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>
<a name="194" /><span class="False">     194:</span> <span class="f">#</span><span class="n">else</span>
<a name="195" /><span class="False">     195:</span> <span class="k">/*</span>
<a name="196" /><span class="False">     196:</span> <span class="k"> * Use of ({0;}) because WARN_ON_SMP(x) may be used either as</span>
<a name="197" /><span class="False">     197:</span> <span class="k"> * a stand alone line statement or as a condition in an if ()</span>
<a name="198" /><span class="False">     198:</span> <span class="k"> * statement.</span>
<a name="199" /><span class="False">     199:</span> <span class="k"> * A simple &quot;0&quot; would cause gcc to give a &quot;statement has no effect&quot;</span>
<a name="200" /><span class="False">     200:</span> <span class="k"> * warning.</span>
<a name="201" /><span class="False">     201:</span> <span class="k"> */</span>
<a name="202" /><span class="False">     202:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_V0FSTl9PTl9TTVBfMA__"><span class="b">WARN_ON_SMP</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>            <span class="f">(</span><span class="f">{</span><span class="c">0</span><span class="f">;</span><span class="f">}</span><span class="f">)</span>
<a name="203" /><span class="Maybe">     203:</span> <span class="f">#</span><span class="n">endif</span>
<a name="204" /><span class="Maybe">     204:</span> 
<a name="205" /><span class="Maybe">     205:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __ASSEMBLY__ */</span>
<a name="206" /><span class="Maybe">     206:</span> 
<a name="207" /><span class="True">     207:</span> <span class="f">#</span><span class="n">endif</span>
<a name="208" /><span class="True">     208:</span> </pre>
  </body>
</html>
